#!/bin/sh
# Обновление пакета kakadu-ai через APT (схема Kakadu VPN, kakadu-apt-upgrade).
# Запускается из Electron main через pkexec — polkit-политика com.kakadu.docs.upgrade.policy
# разрешает ровно этот путь (/usr/local/sbin/kakadu-ai-apt-upgrade). Индексы обновляются
# ТОЛЬКО по нашему списку источников, чтобы не трогать чужие репозитории пользователя.
# $2 — путь relaunch-скрипта (пишет main): после выхода Electron приложение перезапускается
# от имени владельца скрипта — pkexec работает под root, GUI из-под root не поднять.
set -e

PKG="${1:-kakadu-ai}"
REL="${2:-}"
APT_LIST="/etc/apt/sources.list.d/kakadu-ai.list"
APT_RETRIES=3
APT_TIMEOUT_SEC=10

export DEBIAN_FRONTEND=noninteractive

echo "[apt-script] upgrading package: $PKG"

apt-get \
  -o Dir::Etc::sourcelist="$APT_LIST" \
  -o Dir::Etc::sourceparts="-" \
  -o APT::Get::List-Cleanup="0" \
  -o Acquire::Retries="$APT_RETRIES" \
  -o Acquire::https::Timeout="$APT_TIMEOUT_SEC" \
  -o Acquire::http::Timeout="$APT_TIMEOUT_SEC" \
  update || true

apt-get \
  -o Dir::Etc::sourcelist="$APT_LIST" \
  -o Dir::Etc::sourceparts="-" \
  -o APT::Get::List-Cleanup="0" \
  -o Acquire::Retries="$APT_RETRIES" \
  -o Acquire::https::Timeout="$APT_TIMEOUT_SEC" \
  -o Acquire::http::Timeout="$APT_TIMEOUT_SEC" \
  install -y --only-upgrade "$PKG"

echo "[apt-script] done"

# Отложенный перезапуск UI от имени владельца relaunch-скрипта (после выхода Electron).
if [ -n "$REL" ] && [ -f "$REL" ]; then
  (
    sleep 5
    [ -f "$REL" ] || exit 0
    UID_NUM=$(stat -c '%u' "$REL" 2>/dev/null) || exit 0
    UN=$(getent passwd "$UID_NUM" 2>/dev/null | cut -d: -f1)
    if [ -z "$UN" ]; then
      echo "[apt-script] relaunch: no user for uid $UID_NUM"
      exit 0
    fi
    if ! command -v runuser >/dev/null 2>&1; then
      echo "[apt-script] relaunch: runuser not found"
      exit 0
    fi
    echo "[apt-script] relaunch as $UN via $REL"
    runuser -u "$UN" -- /bin/sh "$REL" || true
  ) &
fi
